#字符串的拼接
s = 'hello'
t = 'python'
r = '!'

#1、+
s + t + r
s + ' ' + t + ' ' + r

#2、格式化  %s
'%s%s%s'%(s,t,r)
'%s %s %s'%(s,t,r)

#3、join   常用在列表拼接成字符串
' '.join([s,t,r])  # S.join(iterable) -> str
'**'.join('abc')
#列表字符串互相转化
a = s.split()
a = ' '.join(a) 

#4、format
'{} {} {}'.format(s,t,r)   #后面参数只能多不能比大括号少
'{0} {1} {2}'.format(s,t,r) 
'{2} {0} {1}'.format(s,t,r)
'{n1} {n2} {n3}'.format(n1=s,n2=t,n3=r)

li = ['a','b']
'{0[0]} {0[1]}'.format(li)
'{0[0]} {0}'.format(li)

#格式化输出
'%d'%123
'%f'%3.3
'%c'%97  #a  转ascii
'%o'%8   #10  '%o'%7 -> 7
'%x'%16  #10 '%x'%15 -> f
hex(id(li))  #十六进制地址返回
'%e'%10.23

'%.1f'%10.3  #保留一位小数
'%7.1f'%10.55  #控制长度 包括小数点  不够空格补齐  右对齐
'%1.1f'%10.55  
'%07.1f'%10.55  #可以用初空格以外的填充
'%-7.1f'%10.55   #左对齐
'%-07.1f'%10.55  #不补充0
'%-+7.1f'%10.55  #加号显示 +
'%-+7.1f'%(-10.55) #显示 后面括号内

#转义字符 \ print

e = ''' python
'''
'''
\n 换行
\a 提示音
\t 制表
\b 退格
\r 回车
\f 换页
\'
\"
'''

a = 'aaa\nbbb'
##print(a)
a = r'aaa\nbbb'  #加上r就不在进行转义
#print(a)

#深复制 浅复制

li = [1,2,3,4,5]
tu = ('a','b','c')
l1 = ['a',li]
l2 = ['b',tu]
t1 = ('e',li)  #元祖不可变  元素不可变
t2 = ('f',tu)

t2[1][2]

col1 = l1.copy()
id(col1),id(l1),id(col1[1]),id(l1[1]),id(li)  #后面三个值一致

import copy
col2 = copy.deepcopy(l1)  #X相当于把l1备份一下以便操作
id(col2) != id(l1[1])
#深复制对于嵌套列表复制一个新对象
'''
要注意 神复制浅复制是对于嵌套列表而言  没有嵌套就没有神复制浅复制  都会新建一个对象
'''
#补充内容
'%r'%('agb')
print('%r'%'12')  #不做处理直接输出
print('%s'%12)
print('%r'%12)

'''
在程序%来看变量是不是字符串或者本身是什么样子的
'''
'{:.2f}'.format(12.333) #保留小数点后两位
'{a:.2f}'.format(a = 12.333)
'{:.2%}'.format(0.333)  #百分号输出
'{0:x}'.format(20) #转换为16进制
'{0:o}'.format(20)#转换为8进制
'{a:<10}'.format(a = 12.3,b = 13.44) #左对齐  长度为10
'{a:0<10}'.format(a = 12.3,b = 13.44) #数字补充0  右对齐
'{a:x<10}'.format(a = 12.3,b = 13.44) #数字补充x  右对齐
'{a:x>10}'.format(a = 12.3,b = 13.44) #左对齐  x
'{a:x^10}'.format(a = 12.3,b = 13.44)#居中
'((hello{0}))'.format('python') #转义 ()
f = 'hello{0}'.format
f('python')  #这里吧format当做一个函数来看





